/**
 * 1. promise 就是一个类 
 * 2. promise 有三种 状态 等待 pending 成功 fulfilled 失败 rejected
 *   pending -> fulfilled
 *   pending -> rejected
 *   一旦状态确定后就不能更改
 * 3.resolve reject 是更改状态用的
 * resolve -> fulfilled 成功 状态
 * reject -> rejected 失败 状态
 * 4. then 内部是状态判断 成功状态就调用成功函数 反之 失败调用失败函数 then 方法是被定义原型对象中的
 * 5. then 成功回调函数 有一个参数 便是成功之后的值 失败参数 为失败原因
 */

const MyPromise = require('./09-myPromise')

let p1 = new MyPromise((resolve, reject) => { 
  setTimeout(() => {
    resolve('p1')
   }, 1000)
})

let p2 = new MyPromise((resolve, reject) => { 
   reject('p2 reject')
  // resolve('p2 resolve')
})


p2.finally(() => { 
  console.log('finally')
  return p1
}).then(
  res => { console.log('1 res', res) },
  err => { console.log('1 err', err) }
).then(
  res => { console.log('2 res', res) },
  err => { console.log('2 err', err) }
)